<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES6里的类 

        // ES5 ： 利用构造函数模拟类的概念；
        // function Person(name,age){
        //     this.name = name;   // 属性 、 特征 名称
        //     this.age = age;
        //     // this.hobby = function(){  // 所有对象的hobby方法都是独立的，更加占用内存
        //     //     console.log("打篮球");
        //     // }
        // }

        // // Person.prototype.hobby = function(){
        // //     console.log("打篮球");
        // // }

        // Person.prototype = {
        //     constructor:Person,
        //     hobby:function(){
        //         console.log("打篮球");
        //     }
        // }

        // // 方法 、行为  动词

        // let zhangsan = new Person("张三",20);
        // let lisi = new Person("李四",22);
        // console.log(zhangsan.hobby===lisi.hobby);


        // ES6里的类 


        // class Person{
        //     constructor(name,age){
        //         // 是属性
        //         this.name = name;
        //         this.age = age;
        //     }
        //     hobby(){
        //         console.log("打篮球");
        //     }
        // }
        // // console.log(typeof Person);  // ES6的类 是构造函数的语法糖

        // let zhangsan = new Person("张三",20);
        // let lisi  = new Person("李四",22);
        // console.log(zhangsan);
        // zhangsan.hobby();
        // lisi.hobby();


        // 有2只小狗 ，需要使用类描述小狗。小狗有名字 ，性别 ，第一只叫小黑，公，第二只是 大黄 公 。 小黑和大黄都会叫 。 小黑只叫一次 ，大黄会间隔2秒叫一次。


        /* 
            1.分析需求中涉及的对象，分析对象的 特征和行为 
                大黄  
                    特征（属性）: 名字   、 性别
                    行为 ： 叫一次
                小黑 
                   特征（属性）: 名字   、 性别
                    行为 ：间隔2秒叫一次
            2.分析共性和特性问题 。 把共性问题 抽象成类
                姓名 性别 
                    叫 
            3.分析类之间的逻辑关系 ，实例化对象；

            4.把特性问题 放在对象里处理 
                大黄叫一次
                小黑 间隔2秒叫一次
        
        */

        class Dog{
            constructor(name,gender){
                this.name = name;
                this.gender = gender;
            }
            wow(){
                console.log(this.name + ":wowowowowow!!!");
            }
        }

        let dahaung = new Dog("大黄","公");
        dahaung.wow();

        let xiaohei  = new Dog("小黑","公");

        setInterval(() => {
            xiaohei.wow();
        }, 2000);


    </script>
</body>
</html>